package huawei;

import java.util.HashMap;
import java.util.Scanner;

// https://exam.nowcoder.com/cts/17233685/summary?id=7158DB42FB6BB8E35D2B1AAD67C4DCC3
public class Test_z_003 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int arrLen = in.nextInt();
        int k = in.nextInt();
        int[] arr = new int[arrLen];
        for (int i = 0; i < arrLen; i++) {
            arr[i] = in.nextInt();
        }
        System.out.println(beautArr(arr, k));
    }

    // 双指针遍历每个子数组，判断子数组中最多个数
    private static int beautArr(int[] arr, int k) {
        int left = 0;
        int right = 0;
        int len = arr.length;
        int res = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        while (left < len && right < len) {
            int num = arr[right];
            int elemCount = map.getOrDefault(num, 0);
            map.put(num, elemCount + 1);
//            当前元素个数统计
            if (map.get(num) >= k) {
//                当右指针指向的属于的话，向右启动右指针数组都是
                res += len - right;
//                左指针右移前计数 - 1
                map.put(arr[left], map.get(arr[left]) - 1);
                left++;
                map.put(num, map.get(num) - 1);
//                左指针右移后，右指针需要回退一个，重新判定一次，因为左边界改了，
//                当前的影响因子 right 还会影响左边界右移的情况
                right--;
            }
//            右移右指针，扩大数组
            right++;
        }
        return res;
    }
}
